<?php

App::import(array('Security'));
/**
 *Modelo de usuario
 *@author Luis Gabriel Rodriguez <luisgabriel84@gmail.com>
 */
class User extends AppModel {

	var $name = 'User';


        /**
        * @var array Reglas de validacion
        * @access public
        */
	var $validate = array(
		'username' => array('rule' => array('alphaNumeric'),'message'=>'Solo letras o números'),
		'password' => array('rule' => array('notempty'),'message'=>'La clave no debe estar vacia'),
                'password2' => array('rule' => array('CheckPasswordMatch'),'message' => 'Passwords did not match'),
		'name' => array('rule' => array('notempty'),'message'=>'El nombre no debe estar vacio'),
                'email' => array('rule' => array('email'),'message'=>'Formato Inválido'),
		'activo' => array('numeric'),
		'acces_level' => array('numeric')
	);

        /**
        *Funcion que se ejcuta antes de validar los datos
        *
        * @return bool
        */
        function beforeValidate()
	{
	        //Validar que el usuario no se encuentre registrado
	        if( !$this->id )
	        {
                        $username = $this->findCount(array('User.username'=>$this->data['User']['username']));
                        $email = $this->findCount(array('User.email'=>$this->data['User']['email']));
                        if($username > 0)
                        {

                                $this->invalidate('username_unique');
                                return false;
                        }
                        if($email>0)
                        {
                                $this->invalidate('email_unique');
                                return false;
                        }
	        }
	        return true;
	}

        /**
         * Contrastar las claves para determinar si coinciden
         */

        function CheckPasswordMatch($data)
        {
                return $this->data['User']['password'] == Security::hash($this->data['User']['password2'], null, true);
        }
}
?>